package com.tonggedata.dataapi.dto;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.tonggedata.dataapi.entity.ApiConfig;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;

/**
 * api配置表，api核心
 * <p>
 * response返参  DTO
 *
 * @author tonggedata
 * @date 2022-06-19 12:59:36
 */
@Data
public class ApiConfigDto {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    private Long id;
    /**
     * api名字
     */
    private String name;
    /**
     * 路径
     */
    private String path;
    /**
     * 版本
     */
    private String version;
    /**
     * 描述
     */
    private String desc;
    /**
     * 分组id
     */
    private Long apiGroupId;
    /**
     * 数据源id
     */
    private Long datasourceId;
    /**
     * 1 已发布 0 已下线
     */
    private Integer status;
    /**
     * 请求方式 1 GET 2 POST
     */
    private Integer requestType;
    /**
     * 协议: 1 http  2 https  3 同时支持http和https
     */
    private Integer protocolType;
    /**
     * 请求参数封装，json格式
     */
    private String requestParamJson;
    /**
     * 排序参数封装，json格式
     */
    private String orderParamJson;
    /**
     * 返回参数封装，json格式
     */
    private String responseParamJson;
    /**
     * 数据返回格式样例 json
     */
    private String responseExampleJson;
    /**
     * 1 可视化,2 sql脚本,3 注册
     */
    private Integer apiConfigType;
    /**
     * 向导模式：SQL脚本内容; 注册模式:预留
     */
    private String contentJson;
    /**
     * 是否分页
     */
    private Integer paged;
    /**
     * 创建人
     */
    private String createUser;
    /**
     * 更新人
     */
    private String updateUser;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 更新时间
     */
    private Date updateTime;


    public void set(ApiConfig apiConfig) {
        this.id = apiConfig.getId();
        this.name = apiConfig.getName();
        this.path = apiConfig.getPath();
        this.version = apiConfig.getVersion();
        this.desc = apiConfig.getDesc();
        this.apiGroupId = apiConfig.getApiGroupId();
        this.datasourceId = apiConfig.getDatasourceId();
        this.status = apiConfig.getStatus();
        this.requestType = apiConfig.getRequestType();
        this.protocolType = apiConfig.getProtocolType();
        this.requestParamJson = apiConfig.getRequestParamJson();
        this.orderParamJson = apiConfig.getOrderParamJson();
        this.responseParamJson = apiConfig.getResponseParamJson();
        this.responseExampleJson = apiConfig.getResponseExampleJson();
        this.apiConfigType = apiConfig.getApiConfigType();
        this.contentJson = apiConfig.getContentJson();
        this.paged = apiConfig.getPaged();
        this.createUser = apiConfig.getCreateUser();
        this.updateUser = apiConfig.getUpdateUser();
        this.createTime = apiConfig.getCreateTime();
        this.updateTime = apiConfig.getUpdateTime();
    }
}
